使用IoT Studio展示云监控报警历史
使用IoT Studio开发设备运维大屏时,可以在运维页面展示设备相关的报警历史信息,便于运维人员掌握设备运行状态,及时定位解决设备问题。本文介绍如何使用IoT Studio的业务逻辑开发和Web应用开发能力,实现设备报警历史信息的展示。
场景说明
以鼓风机的进口温度和出口温度阈值报警为例,在物联网平台实例中创建云监控报警规则,例如出口温度超出上限、进口温度偏低时发出报警通知,然后在IoT Studio中通过业务逻辑开发获取云监控报警历史信息的服务,实现最终在Web应用的可视化大屏中展示。
前提条件
设备已接入物联网平台并上报物模型属性数据。
本文以鼓风机设备为例,对设备属性中进口温度(inlet_temperature)和出口温度(outlet_temperature)值异常的报警信息进行展示。具体操作,请参见:
购买企业版实例:IoT Studio服务和创建物模型指标的阈值报警规则功能,仅在华东2(上海)地域的企业版实例支持。本示例购买华东2(上海)地域的标准型实例使用。
登录物联网应用开发控制台,在页面左上角选择对应物联网平台企业版实例。
在项目中创建产品:鼓风机。
为产品添加物模型:进口温度(inlet_temperature)和出口温度(outlet_temperature)。
在产品下创建设备:device_demo01。
使用设备端SDK接入:开发设备接入物联网平台并上报物模型数据。
步骤一:创建报警规则
本文以创建物模型属性指标的阈值报警规则为例。
步骤二:开发获取云监控报警历史的服务
在物联网应用开发控制台,选择左侧导航栏的项目管理。
单击目标项目卡片。
在项目主页的项目开发下,单击业务逻辑页签。
单击应用列表上方的
。在新建业务逻辑对话框,输入业务逻辑名称(例如:获取云监控报警历史)和描述信息,单击确认。
参数配置说明,请参见业务逻辑编辑器。
在业务逻辑编辑器中,配置业务逻辑节点。
单击左侧的节点图标,拖拽一个HTTP请求节点到画布上。
本文示例的HTTP请求节点使用默认配置。该节点配置说明,请参见HTTP请求。
拖拽一个NodeJS脚本节点到画布上,将HTTP请求节点与该节点相连,并配置该节点。
在NodeJS脚本节点配置面板,单击扩展库管理,并在弹出的对话框中搜索
@alicloud/pop-core
包,单击操作列的安装。安装成功后,返回节点配置面板,在脚本下选择为空白模板,将如下示例代码复制到代码框中。
本示例代码是调用云监控接口DescribeAlertLogList查询报警的历史数据,本示例展示API返回数据的RuleName(报警规则名称)和AlertTime(发生报警的时间戳)。您可根据实际需求,展示接口DescribeAlertLogList返回数据的更多字段。
实际使用中相关参数(例如accessKeyId、accessKeySecret)需替换为真实值,云监控API的SDK使用说明,请参见SDK参考和 使用OpenAPI示例。
/** * @param {Object} payload 上一节点的输出 * @param {Object} node 指定某个节点的输出 * @param {Object} query 服务流第一个节点的输出 * @param {Object} context { appKey, appSecret } * @param {Object} global 变量 */ module.exports = async function(payload, node, query, context, global) { const Core = require('@alicloud/pop-core'); const moment = require('moment'); var client = new Core({ accessKeyId: '<YOUR-ACCESSKEY-ID>', accessKeySecret: '<YOUR-ACCESSKEY-SECRET>', // securityToken: '<YOUR-STS-TOKEN>', // use STS Token endpoint: 'https://metrics.cn-shanghai.aliyuncs.com', apiVersion: '2019-01-01' }); var params = { // 查询过去7天的最近50条数据,可根据需求自行设置请求参数 "StartTime": Date.now() - 7 * 24 * 60 * 60 * 1000, "EndTime": Date.now(), "PageSize": 50, }; var requestOption = { method: 'POST', formatParams: false, }; const data = await client.request('DescribeAlertLogList', params, requestOption); const { AlertLogList = [] } = data; const result = AlertLogList.map(item => { return { // 可在此处添加需要展示的字段 alertName: item.RuleName, alertTime: moment(item.AlertTime).utcOffset(8).format('YYYY/MM/DD HH:mm:ss'), }; }); return { data: result, }; }
拖拽一个HTTP返回节点,将NodeJS脚本节点与该节点相连,该节点输出选择为上一节点(payload)。
调试与发布业务逻辑服务。
在业务服务编辑页面,单击右上方的部署调试图标,部署和调试服务。
调试成功后,调用如下。
调试成功后,单击发布图标,发布该服务。
重要业务需要发布到云端,才能被调用。
步骤三:在Web应用中展示云监控报警历史
在项目主页的项目开发下,单击Web应用页签。
创建Web可视化应用。具体操作,请参见创建Web应用。
在Web应用编辑页左侧单击组件图标,从组件列表拖拽一个重复列表组件到画布上。组件配置说明,请参见重复列表。
单击展示数据右侧的编辑数据源图标,在数据源配置面板,选择数据源为接口,接口来源为业务逻辑开发,选择业务服务为已创建的服务:获取云监控报警历史,并设置定时刷新。数据源配置的详细说明,请参见接口。
双击重复列表组件,编辑重复列表子组件。
删除默认的组件。
拖拽两个文字组件到画布上,分别配置文字内容的数据源为母组件数据源的对应字段。具体配置,请参见文字
本示例分别选择字段alertName(报警规则名称)和alertTime(发生报警的时间)。
退出重复列表的内部编辑模式后,将重复列表的布局方式改为垂直,然后拖入文字组件作为各列信息的标题。
您也可根据实际需要,配置更多组件样式,例如添加矩形组件作为背景框,设置重复列表分页等。
依次单击顶部栏中的保存、预览、发布图标,查看并发布应用。
后续操作
应用发布成功后,您可根据需要选择绑定域名、设置Token,可将应用嵌入其他网站或修改已发布页面中绑定的具体设备。